/**
 * 批量操作文件的函数
 * 对指定目录下的文件进行批量操作 
 */

import { ref } from 'vue';
import { moreConfirm} from "@/utils/messageUtils";

import btachQueueModule from '@/components/MerakBatchProcessQueue/index.ts';


let msg = {
    deleteTips: "goods_archive.delete_warning",
    deleteTipsAgain: "goods_archive.delete_warning_again",
    deleteFail: "",
    del:["goods_archive.delete_warning"],
    qifa:["goods_archive.review_qifa_props"],
    clearance:["goods_archive.review_clearance_props"],
}



/**
 * 使用batch处理过程的自定义hook。
 * @param proxy 代理对象，用于在内部hook中传递给UseQueueModule以控制队列行为。
 * @returns 返回一个对象，包含多个与队列操作相关的属性和函数。
 */
const initBathcProcess = (proxy): Object => {
    // 从btachQueueModule获取队列相关的组件和方法
    const { batchQueueComponent, batchQueue, batchQueueRun, batchHelp } = btachQueueModule(proxy);

    /**
     * 确认删除多个项目的函数，该函数会触发一个需要用户确认的对话框。
     * @returns 返回一个Promise，如果用户确认删除，则Promise解决；如果用户取消，则Promise拒绝。
     */
    const deleteMoreConfirmFn = (msgType): Promise<any> => {
        //console.log(msg.deleteTips, msg.deleteTipsAgain)
        return new Promise((resolve, reject) => {
            // 调用moreConfirm函数，显示一个带有两个删除提示和确认/取消选项的对话框
            let num=msg[msgType]?.length||1;
            moreConfirm({
                num: num,
                msg: msg[msgType],
                callback: val => {
                    // 根据用户的选择，解决或拒绝Promise
                    if (val == 'confirm') {
                        resolve();
                    }
                    if (val == 'cancel') {
                        reject();
                    }
                }
            })
        })
    }

    /**
     * 本地化函数，将快捷视图的消息文本翻译为当前语言。
     */
    const lang = (msg) => {
        Object.keys(msg).map(key => {
            if(typeof msg[key] =="object"){
                lang(msg[key])
            }else{
                msg[key] = proxy.$t(msg[key]);
            }
      
            
        })
    }
    lang(msg); // 初始化时调用，以设置初始语言

    // 返回所有相关的方法和组件
    return {
        batchQueueComponent, batchQueue, batchQueueRun, batchHelp,
        deleteMoreConfirmFn,
    }
}


export {
    initBathcProcess
}








